package com.qwert.shortlink.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qwert.shortlink.admin.dao.entity.Group;
import com.qwert.shortlink.admin.dto.req.group.ShortLinkGroupSaveReqDTO;
import com.qwert.shortlink.admin.dto.req.group.ShortLinkGroupSortReqDTO;
import com.qwert.shortlink.admin.dto.req.group.ShortLinkGroupUpdateReqDTO;
import com.qwert.shortlink.admin.dto.resp.group.ShortLinkGroupRespDTO;

import java.util.List;

/**
 * 短链接分组接口层
 * @author qwert
 * @version 1.0.0
 * @create 2024/6/26 15:09
 **/
public interface IGroupService extends IService<Group> {
    /**
     * 添加分组
     * @param shortLinkGroupSaveReqDTO 添加分组请求参数
     * @return  新增的行数
     */
    Integer saveGroup(ShortLinkGroupSaveReqDTO shortLinkGroupSaveReqDTO);

    /**
     * 添加分组
     * @param username 当前用户
     * @param groupName 分组名称
     * @return 新增行数
     */
    Integer saveGroup(String username, String groupName);

    /**
     * 获取分组列表
     * @return  分组列表响应数据
     */
    List<ShortLinkGroupRespDTO> listGroup();

    /**
     * 修改分组
     * @param shortLinkGroupUpdateReqDTO 分组请求参数
     * @return  修改的行数
     */
    Integer updateGroup(ShortLinkGroupUpdateReqDTO shortLinkGroupUpdateReqDTO);

    /**
     * 删除短链接分组
     * @param gid 短链接分组标识
     * @return  修改的行数
     */
    Integer deleteGroup(String gid);

    /**
     * 排序短链接分组
     * @param linkGroupSortReqDTOList 短链接分组排序参数
     * @return  是否排序成功，成功返回true，失败返回false
     */
    Boolean sortGroup(List<ShortLinkGroupSortReqDTO> linkGroupSortReqDTOList);
}
